<?php

include_once('../lib/simplehtmldom/simple_html_dom.php');
include_once('../common/noticia.php');

/**
 * Esta clase utiliza DOM para descargar y separar las noticias.
 *
 */
class scrapping_noticias {

	/**
	 * Funcion a la que se le pasa una url y devuelve el número máximo de páginas.
	 *
	 * @param unknown_type $url
	 * @return unknown
	 */
	public function obtener_numero_paginas($url)
	{
		$html = new simple_html_dom();
		$html->load_file($url);
		$num_maximo = $html->find('div.listingBar',0)->find('span',2)->find('a',0)->plaintext;		
		echo "El número de páginas en este idioma es ", $num_maximo, "<br/><br/>";
		
		//Destruimos el objeto simple_html_dom
		$html->__destruct();
		
		return $num_maximo;
	}
	
	/**
	 * Obtiene el enlace de cada noticia de la página cuya url pasamos.
	 *
	 * @param unknown_type $url
	 * @return unknown
	 */
	public function obtener_enlace_noticias($url)
	{
		$html = new simple_html_dom();		
		$html->load_file($url);
		
		//Para obtener los enlaces de las noticias relacionadas
		//han de estar dentro de un table cuyo summary sea "listado de contenido".
		$enlaces = $html->find('table', 0)->find('a[class="state-published"]');
		//Guardar el atributo href de las noticias para así tener los enlaces
		$ret[] = array();
		$i=0;
		foreach ($enlaces as $enlace) {
			$ret[$i++]=$enlace->href;
		}
		//Destruimos el objeto simple_html_dom
		$html->__destruct();
				
		return $ret;
	}
	
	/**
	 * Muestra los enlaces de todas las noticias.
	 *
	 */
	public function mostrar_enlace_noticias()
	{
		for($i=0;$enlaces[$i]!=null;$i++)
		echo $enlaces[$i],"<br/>";
	}
	
	/**
	 * Obtiene la cabecera y contenido de una noticia cuya URL se le pasa como parámetro.
	 *
	 * @param unknown_type $url_noticia
	 * @return unknown
	 */
	public function obtener_datos_noticia($url_noticia)
	{
		$noticia = new noticia();
		//Obtener la url de la noticia a tratar
		$html = new simple_html_dom();
		$html->load_file($url_noticia);
		//Obtener título
		$noticia->set_titulo(trim(html_entity_decode($html->find('span[id=parent-fieldname-title]',0)->plaintext,ENT_NOQUOTES,'UTF-8')));
		if($noticia->get_titulo()==null || $noticia->get_titulo()=="") {
			$noticia->set_titulo(trim(html_entity_decode($html->find('h1[id=parent-fieldname-title]',0)->plaintext,ENT_NOQUOTES,'UTF-8')));
		}		
		//Obtener contenido
		$hay_contenido = true;
		$num_parrafo = 0;
		$texto_noticia = "";
		while($hay_contenido) {
			$texto_aux=html_entity_decode($html->find('p.documentDescription',0)->find('p',$num_parrafo)->plaintext,ENT_NOQUOTES,'UTF-8');
			
			if($texto_aux==null) {
				$hay_contenido=false;
			}
			else {
				$texto_noticia.=$texto_aux;
				$num_parrafo++;
			}
		}
		//Asignarle a la noticia todo el texto al completo
		$noticia->set_contenido(trim($texto_noticia));
		
		//$noticia->set_contenido(htmlentities($html->find('p.documentDescription',0),ENT_NOQUOTES,'UTF-8'));
		if($noticia->get_contenido()==null || $noticia->get_contenido()=="") {
			//echo "  -------- Uso parent-fieldname-text!<br/>";
			$noticia->set_contenido(trim(html_entity_decode($html->find('div[id=parent-fieldname-text]',0)->plaintext,ENT_NOQUOTES,'UTF-8')));
		}
		else {
			//echo "  -------- Uso documentDescription!<br/>";
		}
		//Destruimos el objeto simple_html_dom
		$html->__destruct();
		
		return $noticia;
	}

}
                
?>